package top.wardyan.wmes.rfid.vo;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.NumberUtil;
import top.wardyan.wmes.constant.DataType;
/**
 * RFID接口的参数
 * @author harrydeep@wardyan.top
 * 2021年10月15日
 */
public class Param {
	/**
	 * 接受RFID工位机上报的指令
	 * 要进行身份验证
	 * 参数:
	 * @param deviceID	** 这个从后台读取
	 * @param useID		** 这个从后台读取
	 * @param funcID	** 这个从后台读取
	 * @param step		** 这个从后台读取
	 * 
	 * @param stationID			站点
	 * @param GID				组号
	 * @param DID				编号
	 * @param isNewData			是否新数据
	 * @param isOfflineData		是否脱机数据 0=实时数据 1=脱机数据
	 * @param datatype			数据类型		1刷卡；2接键(单键)；3按键(多键)；5内部IN；6条码；8开机；9外设；
	 * @param dataGatherTime	数据采集时间
	 * @param dataMakeTime		数据生成时间
	 * @param strPara1			操作数据1
	 * @param strPara2			操作数据2
	 * @param strPara3			操作数据3
	 * @param fullcmd			命令全文
	 * 
	 * 返回值:
	 * 返回一个json对象:
	 * deviceCmdID	流水号
	 * cmdType		指令类型（控制器指令还是终端机指令，0是终端机，1是控制器）
	 * GID 
	 * DID 
	 * cmdNumber	指令编号
	 * CmdContent	指令内容
	 * 模板号
	 * 是否清楚未设置
	 * 总行数
	 * ...
	 * CmdMakeTime	指令生成时间
	 * 
	 */
	
	
	
	
	
	/** 唯一ID。标记某一次的提交。取值为：递增值。要求有保存和分配这个自增值的方法 **/
	Long uid;
	
	/** 站点ID **/
	Integer stationID;
	
	/** 组号 **/
	Integer gid;
	
	/** 设备序号 **/
	Integer did;
	
	/** 是否新数据 **/
	Boolean newData;
	
	/** 是否脱机数据 0=实时数据 1=脱机数据 **/
	Boolean offlineData;
	
	/** 数据类型 1刷卡；2接键(单键)；3按键(多键)；5内部IN；6条码；8开机；9外设； **/
	//Integer datatype;
	DataType datatype;
	
	/** 数据采集时间 **/
	DateTime dataGatherTime;
	
	/** 数据生成时间 **/
	DateTime dataMakeTime;
	
	/** 
	 * 主要参数. 是否支持文本? 
	 **/
	String param;
	
	/** 参数说明 用作替换strPara2 **/
	String desc;

	/** 参数备注 用作替换strPara3 **/
	String note;
	
	/** 原始的命令全文 仅做备用 **/
	String content;

	
	
	public Long getLongParam() {
		return Long.parseLong(param);
	}
	
	public Integer getIntParam() {
		return Integer.parseInt(param);
	}
	
	public Boolean isIntParam() {
		return NumberUtil.isInteger(param);
	}
	public Boolean isLongParam() {
		return NumberUtil.isLong(param);
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	public Integer getStationID() {
		return stationID;
	}

	public Param setStationID(Integer stationID) {
		this.stationID = stationID;
		return this;
	}

	public Integer getGid() {
		return gid;
	}

	public Param setGid(Integer gid) {
		this.gid = gid;
		return this;
	}

	public Integer getDid() {
		return did;
	}

	public Param setDid(Integer did) {
		this.did = did;
		return this;
	}

	public Boolean getNewData() {
		return newData;
	}

	public Param setNewData(Boolean newData) {
		this.newData = newData;
		return this;
	}

	public Boolean getOfflineData() {
		return offlineData;
	}

	public Param setOfflineData(Boolean offlineData) {
		this.offlineData = offlineData;
		return this;
	}

	public DataType getDatatype() {
		return datatype;
	}

	public Param setDatatype(DataType datatype) {
		this.datatype = datatype;
		return this;
	}

	public DateTime getDataGatherTime() {
		return dataGatherTime;
	}

	public Param setDataGatherTime(DateTime dataGatherTime) {
		this.dataGatherTime = dataGatherTime;
		return this;
	}

	public DateTime getDataMakeTime() {
		return dataMakeTime;
	}

	public Param setDataMakeTime(DateTime dataMakeTime) {
		this.dataMakeTime = dataMakeTime;
		return this;
	}

	public String getDesc() {
		return desc;
	}

	public Param setDesc(String desc) {
		this.desc = desc;
		return this;
	}

	public String getNote() {
		return note;
	}

	public Param setNote(String note) {
		this.note = note;
		return this;
	}

	public String getContent() {
		return content;
	}

	public Param setContent(String content) {
		this.content = content;
		return this;
	}

	public String getParam() {
		return param;
	}

	public Param setParam(String param) {
		this.param = param;
		return this;
	}

	public Long getUid() {
		return uid;
	}

	public Param setUid(Long uid) {
		this.uid = uid;
		return this;
	}
	
	
	
	
}
